# -*- coding: utf-8 -*-
"""
------------------------------------------------------------------------------
    File Name:  base_opr
    Author   :  wanwei1029
    Date     :  2018/5/7
    Desc     :在python中，创建文件用到open函数。创建文件夹用os模块。复制，移动文件夹等用shutil模块。
------------------------------------------------------------------------------
"""
# import sys
import os
import shutil

# sys.path.append("../../")
import samp_logging as sl

logger = sl.get_logger('base_opr')


def os_samp():
    """
    os常用属性：
    os.path.sep  系统目录分隔符 windows是\ linux是/(待验证)
    os的基本方法：
    os.remove("d:/temp/newDatingTestSet.txt"):删除指定文件，如果文件不存在，会报找不到指定文件的错误。
    os.removedirs("d:/temp/classes"):删除指定的空目录，非空会报错,不存在也会报错。
    os.name 当前使用平台,windows是：nt,linux是：posix
    os.rename(src,dst):重命名文件或文件夹，src不存在会报错。
    os.makedirs(dst):如果dst只是一个文件夹名，则在当前python目录下创建，如果是绝对路径，则级联创建，如果存在会报错。
    """
    logger.debug("当前python脚本的目录：{0}".format(os.getcwd()))
    logger.debug("目录{0}下的文件及文件夹有：{1}".format("D:/temp", os.listdir("D:/temp")))
    # os.remove("d:/temp/newDatingTestSet.txt")
    # os.removedirs("d:/temp/aaa")
    logger.debug("检查是否文件:{0}".format(os.path.isfile("d:/temp/datingTestSet.txt")))
    logger.debug("检查是否文件夹:{0}".format(os.path.isdir("d:/temp/classes")))
    logger.debug("检查是否绝对路径:{0}".format(os.path.isabs("d:/temp/datingTestSet.txt")))
    logger.debug("检查是否绝对路径:{0}".format(os.path.isabs("temp/datingTestSet.txt")))
    logger.debug("检查路径是否存在:{0}".format(os.path.exists("d:/temp/datingTestSet.txt")))
    logger.debug("检查路径是否存在:{0}".format(os.path.exists("d:/temp/")))
    logger.debug("检查路径是否存在:{0}".format(os.path.exists("d:/temp/aaa")))
    logger.debug("分离路径和文件名:{0}".format(os.path.split("d:/temp/datingTestSet.txt")))
    logger.debug("分离文件和扩展名:{0}".format(os.path.splitext("d:/temp/datingTestSet.txt")))
    logger.debug("分离文件和扩展名:{0}".format(os.path.splitext("datingTestSet.txt")))
    logger.debug("获取路径名:{0}".format(os.path.dirname("d:/temp/datingTestSet.txt")))
    logger.debug("获取文件名:{0}".format(os.path.basename("d:/temp/datingTestSet.txt")))
    logger.debug("当前平台：{0}".format(os.name))
    # os.rename("d:/temp/aaa.txt","d:/temp/bbb.txt")
    logger.debug("获取文件大小:{0}".format(os.path.getsize("d:/temp/datingTestSet.txt")))
    # os.makedirs("d:/temp/aaa/bb")
    # os.makedirs("aaab")

    # 环境变量怎么用，还不清楚。
    logger.debug("设置环境变量:{0}".format(os.putenv("test", "test_val")))
    logger.debug("获取环境变量:{0}".format(os.getenv("test")))


def shutil_samp():
    """
    copytree:两参数必须都是文件夹，并且目标参数文件夹不能存在，否则会报错。
    copyfile：是将src文件里的内容保存至dst中去，两个文件都必须存在。
    copy:src只能是文件，dst可以里目录或文件，文件不存在会创建
    以上复制都是内容替换，不是append。
    move:src可以是文件或文件夹。
    rmtree：可以删除非空目录。
    :return:
    """
    # os.makedirs("d:/temp/ccc")
    if not os.path.exists("d:/temp/ccc"):
        shutil.copytree("d:/temp/aaa", "d:/temp/ccc");
    # shutil.copy("d:/temp/datingTestSet.txt", "d:/temp/ccc")
    # shutil.copy("d:/temp/datingTestSet.txt", "d:/temp/ccc/datingTestSet.txt")
    # shutil.move("d:/temp/classes","d:/temp/aaa")  #移动文件夹
    # shutil.move("d:/temp/datingTestSet.txt", "d:/temp/aaa")
    shutil.rmtree("d:/temp/ccc");


if __name__ == '__main__':
    test_method = "os_samp1"
    print(os.path.dirname(r"D:/temp/ccc/a.txt"))
    if test_method == "os_samp":
        os_samp()
    elif test_method == "shutil_samp":
        shutil_samp();